package com.designPatterns.singleton;

/**
 * 单例模式:延迟加载
 * 先检查后执行,在类加载时并不初始化,只有在调用getInstance()时才会初始化.但在并发场景下并不安全,A和B两个线程,
 * A执行到if(instance == null)  条件成立 正常的顺序是继续执行,这是实例还没有创建,但是若B线程也执行到 if(instance == null) 则条件也
 * 能成立,也会执行创建实例的代码,这是就有了2个实例,则非单例
 * Created by houjinxin on 16/3/5.
 */
public class SingletonLazyLoad {

    private static SingletonLazyLoad instance;

    private SingletonLazyLoad(){
        System.out.println("我是懒加载的类");
    }

    public static SingletonLazyLoad getInstance(){
        if(instance == null) {
            instance = new SingletonLazyLoad();
        }
        return instance;
    }

    /**
     * 该方法用于测试懒加载是否成功
     */
    public static void doSomething(){
        System.out.println("干了一些事情");
    }
}

